#!/bin/bash
#备份数据库和tomcat文件
#先备份数据库再备份文件
#备份后上传谷歌云，谷歌去保留3份文件，然后删除3天前的备份
#上传完后删除服务上的备份文件，很占空间
#备份文件 https://www.cnblogs.com/joshua317/p/6170839.html
# H 3 * * *   每天3点执行定时任务
# 执行命令 /bin/bash docker/back/bbs-back.google.sh
echo '使用备份脚本需要谷歌gsutil工具'
/opt/google-cloud-sdk/bin/gsutil -v
echo '当前目录'
pwd
try catch
{
now="`date +%Y%m%d%H%M%S`" #时间
echo '当前时间：'$now
sql=bbs.sql.${now}.tar.gz #备份的sql文件名
file=bbs.file.${now}.tar.gz #备份的文件文件名
before="`date -d '3 day ago' +%Y%m%d`" #三天前的时间
echo '三天前时间:'$before
beforeSql=bbs.sql.${before}*
beforeFile=bbs.file.${before}*
jenkins=/var/jenkins_home #jenkins_home目录

if [! -x "$jenkins/back"];
then
mkdir  ${jenkins}/back
fi
echo '备份数据库'
time tar -zcvf ${jenkins}/back/${sql}  ${jenkins}/sqlserver/*
echo '上传数据库到谷歌云'
echo ${jenkins}/back/${sql}
/opt/google-cloud-sdk/bin/gsutil cp ${jenkins}/back/${sql} gs://bbs-cloud
echo '上传成功'
echo '删除服务器备份数据库'
rm -rf ${jenkins}/back/${sql}
echo '删除3天前备份数据库'
/opt/google-cloud-sdk/bin/gsutil rm gs://bbs-cloud/${beforeSql}
echo '备份文件'
time tar -zcvf ${jenkins}/back/${file}  ${jenkins}/tomcat/file-server/files/*
echo '上传文件到谷歌云'
/opt/google-cloud-sdk/bin/gsutil cp ${jenkins}/back/${file} gs://bbs-cloud
echo '上传成功'
echo '删除服务器备份文件'
rm -rf ${jenkins}/back/${file}
echo '删除3天前备份文件'
/opt/google-cloud-sdk/bin/gsutil rm gs://bbs-cloud/${beforeFile}
echo '列出谷歌云文件列表'
/opt/google-cloud-sdk/bin/gsutil ls gs://bbs-cloud/
} || {
  echo '备份失败'
}

